package com.lh.java.bitset;

import java.util.BitSet;

public class BitSetApp {
	private static int n = 5;

	public static void main(String[] args) {
		BitSet set1 = new BitSet(n);
		for (int i = 0; i < n; i++)
			set1.set(i);
		// 将set1的各位赋1，即各位均为true
		BitSet set2 = new BitSet();
		set2 = (BitSet) set1.clone();
		// set2为set1的拷贝
		set1.clear(0);
		set1.clear(3);
		set2.clear(2);
		// 将set1的第0位set2的第2位清零
		System.out.println("The set1 is: " + set1);
		System.out.println("The set2 is: " + set2);
		// 直接将set1转换成字符串输出，输出的内容是set1中值true所处的位置
		// 打印结果为The set1 is:{1,2,3,4}
		System.out.println("The hash code of set2 is:" + set2.hashCode());
		// 打印set2的hashCode
		printbit("set1", set1);
		printbit("set2", set2);
		// 调用打印程序printbit(),打印对象中的每一个元素
		// 打印set1的结果为The bit set1 is:false true true true true
		set1.and(set2);
		printbit("set1 and set2", set1);
		// 完成set1 and set2,并打印结果
		set1.or(set2);
		printbit("set1 or set2", set1);
		// 完成set1 or set2,并打印结果
		set1.xor(set2);
		printbit("set1 xor set2", set1);
		// 完成set1 xor set2,并打印结果
	}

	// 打印BitSet对象中的内容
	public static void printbit(String name, BitSet set) {
		System.out.println("The bit " + name + " is: ");
		for (int i = 0; i < n; i++) {
			System.out.print(set.get(i) + " ");
			System.out.println();
		}
	}
//	{1, 2, 4}    01101 01001 11011 
//	{0, 1, 3, 4} 11011 11011 11011 
}